package com.sg.dto.base.framework.req;


import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Objects;


/**
 * @desc DeptDto
 * @使用场景
 */

@Data
public class DeptDto extends BaseDto implements Serializable {

    /**
     * 部门ID:
     */
    @ApiModelProperty("部门ID")
    private String deptId;

    /**
     * 部门标识:
     */
    @ApiModelProperty("部门标识")
    private String deptCode;
    /**
     * 父级部门ID:
     */
    @ApiModelProperty("父级部门ID")
    private String parentDeptId;
    /**
     * 层级:
     */
    @ApiModelProperty("层级")
    private Long levelNumber;
    /**
     * 部门名称（中文）:
     */
    @ApiModelProperty("部门名称（中文）")
    private String deptName;
    /**
     * 组织ID:
     */
    @ApiModelProperty("组织ID")
    private String organizationId;
    /**
     * 是否可创建下级部门:
     */
    @ApiModelProperty("是否可创建下级部门")
    private String isCreateLowerDept;
    /**
     * 排序:
     */
    @ApiModelProperty("排序")
    private Long orderNumber;
    /**
     * 是否有直属成员:
     */
    @ApiModelProperty("是否有直属成员")
    private String isDirectlyMember;
    /**
     * 部门编号:
     */
    @ApiModelProperty("部门编号")
    private String deptNumber;
    /**
     * 部门名称（英文）:
     */
    @ApiModelProperty("部门名称（英文）")
    private String deptEnName;
    /**
     * 部门简称:
     */
    @ApiModelProperty("部门简称")
    private String deptShortName;
    /**
     * 可选分管领导角色成员ID:
     */
    @ApiModelProperty("可选分管领导角色成员ID")
    private String roleMemberId;
    /**
     * 主体生命周期:
     */
    @ApiModelProperty("主体生命周期")
    private String subjectLifeCycle;
    /**
     * 部门类型字典ID:
     */
    @ApiModelProperty("部门类型字典ID")
    private String typeDictionaryId;
    /**
     * 主管的就职记录ID
     */
    @ApiModelProperty("主管的就职记录ID")
    private String directorInductionId;
    /**
     * 部门职责概述
     */
    @ApiModelProperty("部门职责概述")
    private String deptDutyDesc;

    /**
     * 部门目标概述
     */
    @ApiModelProperty("部门目标概述")
    private String deptTargetDesc;
    /**
     * 党团主管的就职记录ID
     */
    @ApiModelProperty("党团主管的就职记录ID")
    private String partyAndYouthDirectorInductionId;
    /**
     * 行政主管的姓名
     */
    @ApiModelProperty("行政主管的姓名")
    private String directorIdCardName;

    /**
     * 党团主管的姓名
     */
    @ApiModelProperty("党团主管的姓名")
    private String partyAndYouthDirectorIdCardName;
    /**
     * 通用数值字段（整数型）
     */
    @ApiModelProperty("通用数值字段（整数型）")
    private Long comNumField;
    /**
     * 类型字典名称
     */
    @ApiModelProperty("类型字典名称")
    private String typeDictionaryName;

    /**
     * 部门业务身份
     */
    @ApiModelProperty("部门业务身份")
    private String deptBusinessIdentity;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        DeptDto that = (DeptDto) o;
        return deptId == that.deptId && deptCode == that.deptCode && parentDeptId == that.parentDeptId && levelNumber == that.levelNumber && deptName == that.deptName && organizationId == that.organizationId && isCreateLowerDept == that.isCreateLowerDept && orderNumber == that.orderNumber && isDirectlyMember == that.isDirectlyMember && deptNumber == that.deptNumber && deptEnName == that.deptEnName && deptShortName == that.deptShortName && roleMemberId == that.roleMemberId && subjectLifeCycle == that.subjectLifeCycle && typeDictionaryId == that.typeDictionaryId && directorInductionId == that.directorInductionId && deptDutyDesc == that.deptDutyDesc && deptTargetDesc == that.deptTargetDesc && partyAndYouthDirectorInductionId == that.partyAndYouthDirectorInductionId && directorIdCardName == that.directorIdCardName && partyAndYouthDirectorIdCardName == that.partyAndYouthDirectorIdCardName && comNumField == that.comNumField && typeDictionaryName == that.typeDictionaryName && deptBusinessIdentity == that.deptBusinessIdentity;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), deptId, deptCode, parentDeptId, levelNumber, deptName, organizationId, isCreateLowerDept, orderNumber, isDirectlyMember, deptNumber, deptEnName, deptShortName, roleMemberId, subjectLifeCycle, typeDictionaryId, directorInductionId, deptDutyDesc, deptTargetDesc, partyAndYouthDirectorInductionId, directorIdCardName, partyAndYouthDirectorIdCardName, comNumField, typeDictionaryName, deptBusinessIdentity);
    }
}
